package com.ylr.admin.common.dto.menu;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.jetbrains.annotations.NotNull;

import java.util.Date;
import java.util.TreeSet;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-05-09 15:07:27
 * className: MenuDto
 * version: 1.0
 * description:
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class MenuDto implements Comparable<MenuDto> {

    /**
     * 菜单主键
     */
    private String id;

    /**
     * 父菜单主键，一级菜单为0
     */
    private String parentId;

    /**
     * 父级菜单路径（‘-’分割）
     */
    private String parentPath;

    /**
     * 所属模块
     */
    private Integer module;

    /**
     * 所属通道
     */
    private Integer channel;

    /**
     * 菜单名称
     */
    private String menuName;

    /**
     * 组件路径
     */
    private String path;

    /**
     * 菜单地址/路由
     */
    private String uri;

//	/**
//	 * 菜单路由名称
//	 */
//	private String uriName;

    /**
     * 菜单类型[0-目录 1-菜单]
     */
    private Integer type;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 排序等级
     */
    private Integer sort;

    /**
     * 菜单状态[0-可用 1-停用]
     */
    private Integer status;

    /**
     * 是否外链[0-否 1-是]
     */
    private Integer iframeStatus;

    /**
     * 显示状态[0-显示 1-隐藏]
     */
    private Integer displayStatus;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 更新用户
     */
    private String updateUser;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 创建用户
     */
    private String createUser;

    /**
     * 子菜单集合
     */
    private TreeSet<MenuDto> children;

    @Override
    public int compareTo(@NotNull MenuDto o) {
        int val = sort.compareTo(o.getSort());
        if (val == 0) {
            val = createTime.compareTo(o.getCreateTime());
            if (val == 0) {
                val = id.compareTo(o.getId());
            }
        }
        return val;
    }
}
